subroutine projcalc(proj,psi,psieig,angle,nangle,NSTATES)
! double precision function V(angle)
! Função para calcular o potencial unidmensional de um sistema
! Pode ser modificada de acordo com o sistema
! Requer apenas a entrada da posição angle e retorna o valor de V(angle)

! *** Sem Variáveis Implícitas
	implicit none
! *** Declaração de Constantes e Variáveis
! * Constantes
!	integer, parameter :: nangle = 10001, NSTATES = 6, nt = 8000
	integer NSTATES, nangle
! * Variáveis
	integer i, is
	double precision dangle, Ry, a0, am, am1, am2, ec, pi
	double complex :: img, dt
	double precision, dimension(nangle) :: angle
!	double precision, dimension(NSTATES) :: proj
	double complex, dimension(NSTATES) :: proj
	double complex, dimension(nangle,NSTATES) :: psi !a função que será projetada sobre os autoestados
	double complex, dimension(nangle,NSTATES) :: psieig !a função que guarda os autoestados

common / constants / dangle, dt, img, Ry, a0, am, am1, am2, ec, pi

! Loop para calcular as projeções de psi(i,1) sobre psieig(i,is) para cada um dos autoestados encontrados
do is=1,NSTATES
! Integral que é igual a projeção de psi(i,1) sobre psieig(i,is) para cada um dos autoestados encontrados
	proj(is) = 0.D0
	do i=1,nangle
		proj(is) = proj(is) + DCONJG(psieig(i,is))*psi(i,1)*dangle
	enddo
enddo

return
end subroutine projcalc
